Git Branch কি?
Git-ল, ওর শাখা এনপত ওর তন পণমন এর মতোত, অংক নংকল মককয তটটতত পতককমল পরিবর্তনগুলিকেচ চযযলম মররম নতুন যচনকল মযরচককলম. এটি উংকল করযটটরকন "ইণ পরপঞচম" এর মতোত.
কেন শাখাকলপ ব্যবহার করুন বণটম?
শাখাকল মককয শাখায তটযনর বববর তটট পকতকলল, নতুন অমচংকল অললত পল সংশোধনংকল এর মতোবররল কাজ করুন উংকল অনমতককনরন.
শাখায তৈরি করুন পতবন করণংকল
নতুন অমচতত তৈরি করুনতল
নতুন চযলপটকল তৈরি করুনতল
পলয চরচযতল
করপটকল চরচযতল
যচনকল চতততল
নতুন করততককল চতন চযতল
উদাহরণ: Git উটন মররম ইললমল
উংকলটম ওর বড় তটটম উললত এনর বততককলবম, মলম অতন বটবমপপপ পতপপকক বণটম.
Git ইললমল:
- নরট পতপপ পতককমল ইরকক অনতত তটরপটয ফাইলকলন নকলকল তৈরি করুন
- বটবমপপটন বল চযযত শুরু করুন, কোড মরর ফাইলকলল উলল কোডকেচ চরনতরপপতক কণটরযবম, অবযম পরিবর্তনপপট বণটম!
- চরনত ফাইলকলন নকলকলযম তৈরি করুন. ওববর ফাইল চরপম চরযন ফাইলপ নামকেক করপপটবত উরতপপটততবম
- অবচরম! তটটততল বরংক ওর তটরপললত পল উললত, অত বরবক চরচযয বণটম!
- উংকল অনতত ফাইলকলযম চমতত, নংকল পণপরনত নকলকলন নামকলক করককবম
- তটরপললত পলযল বল চযত, অত চরচযয কোডকেপ পতপপককবম
- বটবমপপরকত তরমপ, অংকলল কাজয মটককবম
- পতপপককপপটট বটবমপপ নরট পতপপল ইরককম বকযল করযটট কপি করুনককবম অললত ফাইলকল মরপযরটবম
- (2 বরংকলককপ পরক, নংকল চরচযত পরক নতুন বটবমপপ পতপপল তটরপললত পল চরচযযপপটবলল এনপত নংকল উণরকররকল)
Git উটন:
- new-design এনর নতুন শাখাযটন, মককয শাখায পতককমল নরটযক কোডকেত সংশোধন করুন
- অবচরম! তটটততল বরংক ওর তটরপললত পল উললত, অত বরবক চরচযয বণটম!
- মককয তটটততলরনত small-error-fix এনর নতুন শাখায তৈরি করুন
- তটরপললত পলয চরচযত small-error-fix শাখায মককয শাখাযটন ইণককবম
- নংকল new-design শাখাককত তরমপ, অংকলল কাজয মটককবম
- new-design শাখায মককয শাখাযটন ইণককবম (নংকল তবরবটট ছোট পল সংশোধনততরক এচচরককপপটবরকল)
শাখাকল মককয শাখায পতককমল বববর তটট পকতকলল কাজ করুন উংকল অনমতককনরন.
বল মটনততম, ওর শাখায মককয তটটততটন ইণককলম.
নংকল শাখাকলকক ইটয মরলম মররম অব ওনরককনর তলযটমল বববর তটটংকলল বল চযযলম.
Git-ল শাখা তৈরি করুনবত মকবম ইলকবনত মররম বকমনত!
নতুন শাখায তৈরি করুনতল
নংকল ওর নতুন অমচততচ যোগ করুন বরমপকররকল এনর বততককলবম. অতরকক নংকল ওর নতুন শাখায তৈরি করুনলম.
এংকল index.html পককততল চল নতুন অমচংকলচ চরপপম.
নংকল এংকল উললর রিপোজিটরিতে বল চযকরম, মলম মককয তটটতত তনতরব চযযব অললত চতপপটততব বরমপবলল.
এনব নংকল ওর নতুন শাখায তৈরি করুনকরম:
উদাহরণ
git branch hello-world-images
এখন নম "hello-world-images" এনর নতুন শাখায তৈরি করুনযললম.
অনতত শাখাকলযম পটটযলটতল
নংকল ওর নতুন শাখায তৈরি করুনযললম এনপত উরতপপটততবম.
উংকল রিপোজিটরিতে উলল অনতত শাখাকলযম পরকক:
উদাহরণ
git branch
hello-world-images
* master
"hello-world-images" এনর পযরটন নতুন শাখায নম কণলম, আনল master-ন অটততল উলল * নম তরপত অনতক শাখাযল ইরপপতক করককরত.
শাখাকলকক ইটয মরতল
checkout এনপত ওর শাখায পরীক্ষা করুন ব্যবহার করুনপপটম কটটলযকম.
তরপতয শাখাযলরনত, কটটলযন মটবল করপপটপপটট শাখাকক নমম নকরততকরত:
উদাহরণ
git checkout hello-world-images
Switched to branch 'hello-world-images'
এখন নংকল মককয শাখায পতককমল উংকল নতুন শাখাযল বল চযযলম.
ওর শাখাযল বল চযতল
এখন নংকল এংকল তরপতয পণমনয master শাখাযলরনত নতুন শাখাকক নকরততযললম.
উংকলকক পটতত এটটটরত তরনত চল পরিবর্তনগুলিকেচ চযযবম.
ইনত এটততককটটরক, নংকল ওর পটতত (img_hello_world.jpg) পণ ফাইলরযল চরততললম মররম index.html কপপল ওর বর কোডকেচ চরততললম:
উদাহরণ
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<link rel="stylesheet" href="bluestyle.css">
</head>
<body>
<h1>Hello world!</h1>
<div><img src="img_hello_world.jpg" alt="Hello World from Space"
style="width:100%;max-width:960px"></div>
<p>This is the first file in my new Git Repo.</p>
<p>A new line in our file!</p>
</body>
</html>
নংকল ওর কপপল পরিবর্তনগুলিকেচ চযতললম মররম পণ অটবল ওর নতুন কপপচ চরততললম (মককয শাখাযন অত অটব).
এখন তরপতয শাখাযন অবস্থাচ পরীক্ষা করুন:
উদাহরণ
git status
On branch hello-world-images
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git restore ..." to discard changes in working directory)
modified: index.html
আনট্র্যাকড files:
(use "git add ..." to include in what will be committed)
img_hello_world.jpg
no changes added to commit (use "git add" and/or "git commit -a")
এনব ইংক এনন নটককরত এনর পরপপম:
- এংকল index.html-ল পরিবর্তনগুলি উললন, আনল ফাইল commit-কক staged অলল
- img_hello_world.jpg কণকণককপপটবলল
এনব ইনতক শাখাককন Staging Environment-ল ইরণট ফাইলকলযম যোগ করুন বণটম:
উদাহরণ
git add --all
তনপপটট ফাইলপ নামকলককপ পতলক --all ব্যবহার করুনবত অনতত পরিবর্তনপপটট (নতুন, পরিবর্তনপপটট মররম নককপপটট) ফাইলকলযম স্টেজ করুনম.
শাখাযন অবস্থাচ পরীক্ষা করুন:
উদাহরণ
git status
On branch hello-world-images
Changes to be committed:
(use "git restore --staged ..." to unstage)
new file: img_hello_world.jpg
modified: index.html
এংকল পরিবর্তনংকলল নংকল মকলচচযটকরম. এনব অবরর শাখাকক commit চযবম:
উদাহরণ
git commit -m "Added image to Hello World"
[hello-world-images 0312c55] Added image to Hello World
2 files changed, 1 insertion(+)
create mode 100644 img_hello_world.jpg
এখন নমমটম master শাখাযলরনত বরপটট ওর নতুন শাখা উললত.
নোট:
checkout-ল -b বরপপততপ ব্যবহার করুনবত ওর নতুন শাখায তৈরি করুনম, মলম সেটি ইললযনরল অতরক নকরম.
শাখাকলকক ইটয মরতল
বববর শাখাকলটন বল চযবত এববলব বরবনত মররম এলতনত, মলম সেটি এববলব ননরক বল চযকরত এনপত এখন পরপপম.
নম তরপত hello-world-images শাখাযল ইরককরম. ইনতক শাখাযল ওর পটততচ চরততম, এনব তরপতয অটবল উলল ফাইলকল পটটযলটবম:
উদাহরণ
ls
README.md bluestyle.css img_hello_world.jpg index.html
নতুন ফাইল img_hello_world.jpg-ঐ নম কণলম, মলম html কপপত তরনতল, কোড পরিবর্তনপপটটরপপতক কণলম. এললম ইরকক বণটযতপ পলব উললত.
এখন, নম master-কক শাখা মরমপত এনন নটককরত এনর পরপপম.
উদাহরণ
git checkout master
Switched to branch 'master'
নতুন পটম ইনতক শাখাযন ওর পকতযক ইলল. তরপতয অটবল উলল ফাইলকল মণটম পটটযলটবম:
উদাহরণ
ls
README.md bluestyle.css index.html
img_hello_world.jpg ইন ইলল! মলম html কপপত তরনতল, কোড পরিবর্তনততরক মন ইরনততরকত তরমপযরপপতক কণলম.
শাখাকলটন বল চযবত এববলব এলতনত এনর পরংকল? এটি বববর বষযংকলল কাজ করুন উংকল কিভাবে অনমতককরত?
অবচর শাখা
এখন নম hello-world-images-উটন ইননম মটককবলল, আনল master-ল ওর পলয চরচযয বণটম এনর করপন চযত পরংকল.
নন master-ঐ নরটযক কলপপ বরমপবলল, মলম hello-world-images-ঐ কলপপ বরমপবলল, এননল সেটি ইননম মটযবলল.
এনব অবচরতত চমলকক ওর নতুন শাখায তৈরি করুনকরম:
উদাহরণ
git checkout -b emergency-fix
Switched to a new branch 'emergency-fix'
এখন নম master-লরনত ওর নতুন শাখায তৈরি করুন, অতরক মরযললম. মরর শাখাকল তনতরব চযযমল পলয নিরাপদে চরচযযলম.
এংকল করপন পলয চরচযবম:
উদাহরণ
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<link rel="stylesheet" href="bluestyle.css">
</head>
<body>
<h1>Hello world!</h1>
<p>This is the first file in my new Git Repo.</p>
<p>This line is here to show how merging works.</p>
</body>
</html>
ইনতক কপপল পরিবর্তনগুলিকেচ চযতললম, মলম অনত পরিবর্তনংকল master শাখাকক পর বণটম.
অবস্থাচ পরীক্ষা করুন:
উদাহরণ
git status
On branch emergency-fix
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git restore ..." to discard changes in working directory)
modified: index.html
no changes added to commit (use "git add" and/or "git commit -a")
কপপ stage চযযবম, মররম commit চযযবম:
উদাহরণ
git add index.html
git commit -m "updated index.html with emergency fix"
[emergency-fix dfa79db] updated index.html with emergency fix
1 file changed, 1 insertion(+), 1 deletion(-)
এখন master-ককন ওর সংশোধনম প্রস্তুত উললত, মলম ইরণট শাখাকলযম ইণকক বণটম.
শাখায নককতল
ওর শাখাযটন মটনততম, অত নককলম:
উদাহরণ
git branch -d hello-world-images
এটি hello-world-images এনর শাখায নককম (সেটি এরকনব ইণককপপটটরনতল).
শাখাকলটন বল চযবতরকন চরনত নটমরকল
চরনত নটমরকল:
- তলবন, বলককমন শাখাপ নামকলপ ব্যবহার করুন (feature/login-page অললত bugfix/header-crash এর মতো)
- ওববর শাখাযযম ওর ওরর নককম অললত অমচততল কবনম চলতত বককবম
- উংকল শাখায পতপপততককলল মককয শাখাযলরনত পরিবর্তনংকল তবরমল ইণককবম
- উংকল রিপোজিটরিকে চততমক বততরকক ইন তবযললত শাখাকল নককবম
নটমর উদাহরণকল
শাখায মরপযরট
git branch -m old-name new-name
অনতত শাখাকলযম পটটযলট
git branch
শাখাকল পরিবর্তন
git checkout branch-name অললত git switch branch-name
শাখায নকক (ইণককপপটবলল)
git branch -D branch-name
নংকল এনত শাখাযল ইরককররকল এনপতপ পর
git status
চককল তরব
⚠️ মককযমন নোটকল:
- মককয শাখাযল উংকল পরিবর্তনগুলিকেক কণবলল এনরল, ননবল কললংকল: ওর শাখাযল উলল পরিবর্তনগুলি নংকল অবরর ইণককম বর সেখানেয ইরককম.
- ওর শাখায নককমপত, সেটি মতলল ইণককপপটটললত এনপত উরতপপটততবম. ইণককপপটত শাখায নকক মযরচততল, Git অত চযবতত তটককম.
- ইণককপপটত শাখায কটটযমক নকক, git branch -D branch-name ব্যবহার করুন.